// 有一个单向链表。链表中有可能出现“环”，如何判断？

// 思路:首先创建两个指针 p1,p2  让他们同时指向这个链表的头节点，然后开始循环，在循环体中，让指针p1每次向后移动1个节点，
//      让指针p2每次向后移动2个节点，然后比较两个指针指向的节点是否相同，相同链表有环

/**
 * 
 * @param {*} head  链表头节点 
 */
function isCycle(head){
    let p1 = head;
    let p2 = head;
    while(p2!=null && p2.next!=null){
        p1=p1.next;
        p2=p2.next.next;
        if(p1 == p2){
            return true;
        }

    }
    return false;
}

class Node{
    constructor(data){
        this.data=data;
        this.next=null;
    }
}


let node1 = new Node(5);
let node2 = new Node(3);
let node3 = new Node(7);
let node4 = new Node(2);
let node5 = new Node(6);

node1.next=node2;
node2.next=node3;
node3.next=node4;
node4.next=node5;
node5.next=node2;



console.log(isCycle(node1));


